package com.cskaoyan.day7._07_stream;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 中间操作 filter
 *
 * @author Common-zhou
 * @since 2023-03-06 15:11
 */
public class Demo4 {

    public static void main(String[] args) {


        test1();

    }

    private static void test1() {
        //对元素进行过滤。比如想要某个地区的学生，比如想要年龄大于20的学生。

        List<Student> studentList = new StudentList().studentList;

        // 1.创建流
        List<Student> shanghaiStudent = studentList.stream()
            // 可以直接new 这个接口，然后idea提示你怎么写
            // 可以跟着idea一起走，它提示你就可以简化
            // 需要注意： 一定要认识代码，如果不认识，退回去
            .filter(student -> Student.Address.SH.equals(student.getAddress())).collect(Collectors.toList());
        System.out.println(shanghaiStudent);

        // 想筛选上海的学生，并且年龄在22岁以上
        //List<Student> students = studentList.stream()
        //    // 这个条件 首先筛选地址
        //    // 然后再筛选年龄  > 20
        //    .filter(stu -> Student.Address.SH.equals(stu.getAddress()) && stu.getAge() > 22)
        //
        //    .collect(Collectors.toList());
        //System.out.println(students);

        List<Student> students = studentList.stream()
            .filter(stu -> Student.Address.SH.equals(stu.getAddress()))
            // 以上这个filter会筛选出 上海的学生
            .filter(student -> student.getAge() > 22)
            // 以上这个筛选 会筛选出 年龄大于20的学生
            .collect(Collectors.toList());

        System.out.println(students);


    }
}
